package com.kotlin.android.router.interceptor

import android.content.Context
import com.alibaba.android.arouter.facade.Postcard
import com.alibaba.android.arouter.facade.annotation.Interceptor
import com.alibaba.android.arouter.facade.callback.InterceptorCallback
import com.alibaba.android.arouter.facade.template.IInterceptor
import com.kotlin.android.ktx.utils.LogUtils
import com.kotlin.android.ktx.ext.isLogin
import com.kotlin.android.router.path.RouterActivityPath

/**
 * 创建者: zl
 * 创建时间: 2020/6/9 8:50 AM
 * 描述:在跳转过程中处理登录事件，这样就不需要在目标页重复做登录检查
 * 拦截器会在跳转之间执行，多个拦截器会按优先级顺序依次执行
 */
@Interceptor(name = "login", priority = 6)
class LoginInterceptorImpl : IInterceptor {
    override fun process(postcard: Postcard?, callback: InterceptorCallback?) {
        val path = postcard?.path
        LogUtils.d("process $path   ${isLogin()}" )
        if (isLogin()) {
            callback?.onContinue(postcard)
        } else {
            /**
             * 如果没有登录
             */
            when (path) {
                /**
                 * 需要登录的直接拦截下来
                 */
                RouterActivityPath.User.PAGER_USER_DETAIL,
                RouterActivityPath.Simple.PAGER_SIMPLE_MVVM
                -> {
                    LogUtils.d("需要跳转到登录界面")
                    callback?.onInterrupt(null)
                }
                /**
                 * 不需要登录的直接进入这个页面
                 */
                else -> callback?.onContinue(postcard)
            }
        }
    }

    override fun init(context: Context?) {
        LogUtils.v("路由登录拦截器初始化成功，此方法只走一次")

    }
}